<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>2022-8-5</title>
</head>

<body>
  <script>
    // 1. 封装一个函数实现字符串翻转。
    var str = "123456";
    function reverseStr(str) {
      return str.split("").reverse().join();
    }
    console.log(reverseStr(str));

    // 2. 字符串 digite = "0123456789", 把后 5 个字符分割出来， 返回个单字符的数组, 注意， 返回数组里面的数字是字符串类型
    //期望结果:['5', '6', '7', '8', '9']
    var digite = "0123456789";
    // var res = digite.substr(5,10);
    // console.log(res);
    // var res1 = res.split('');
    // console.log(res1);
    digite = digite.substr(5, 10).split("");
    console.log(digite);

    // 3.已知有字符串 foo=”get-element-by-id”,写一个 function 将其转化成驼峰表示法”getElementById”.
    // //replace转换
    var foo1 = "get-element-by-id";
    function fn3(foo1) {
      for (var i = 0; i < foo1.length; i++) {
        if (foo1[i] == "-") {
          //foo1[i]表示短横线 短横线和后面紧接的一个字母变成大写
          foo1 = foo1.replace(
            foo1[i] + foo1[i + 1],
            foo1[i + 1].toUpperCase()
          );
        }
      }
      console.log(foo1);
    }
    fn3(foo1);
    //=========================方案二======================
    //转换成数组后操作
    var foo = "get-element-by-id";
    var newStr = "";
    foo.split("-").forEach(function (item, index) {
      //item 就是 get element by id
      index > 0
        ? (newStr += item.replace(item[0], item[0].toUpperCase()))
        : (newStr = item);
    });
    console.log(newStr);

    // 4.定义一个函数,将"今天是什么鬼天气，这么热，明天要去游泳！"里面所有的"天"的下标输出
    var str4 = "今天是什么鬼天气，这么热，明天要去游泳！";
    function fn4(str4) {
      for (var i = 0; i < str4.length; i++) {
        var index = str4.indexOf("天", i);
        if (index >= 0) {
          console.log(index);
        }
      }
    }
    fn4(str4);
    // 5.定义一个函数,将"今天是什么鬼天气，这么热，明天要去游泳！"里面的所有"天"替换成"日"
    function fn5(day, ri) {
      var str5 = "今天是什么鬼天气，这么热，明天要去游泳！";
      var res5 = str5.replaceAll(day, ri);
      console.log(res5);
    }
    fn5("天", "日");

    // 6.解析 URL Params 为对象，例如(https://www.baidu.com/s?ie=UTF-8&wd=letcode)
    //   得到{ie: 'UTF-8', wd: 'letcode', url: 'https://www.baidu.com/s'}
    var url = "https://www.baidu.com/s?ie=UTF-8&wd=letcode";
    //以?为分隔符切一下
    var obj = {};
    var url_h = url.split('?')[0] //问号前面的地址
    var url_d = url.split('?')[1] //问号后面的地址 而且还需要 & 再切
    url_d.split('&').forEach(function (item) {
      obj[item.split('=')[0]] = item.split('=')[1];
    });
    obj.url = url_h;
    console.log(obj);

    // 7.查找字符串中(abbcccddddd)出现最多的字符和个数(Tips:要先统计每个字符出现的次数)
    var str7 = "abbcccddddd";
    str7 = str7.split(""); //把字符串转成数组
    console.log(str7); //(11) ['a', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd', 'd', 'd']
    str7 = str7.reduce(function (prev, item) {
      if (prev[item]) {
        prev[item] += 1;
        return prev;
      } else {
        prev[item] = 1;
        return prev;
      }
      prev[item] = prev[item] + 1 || 1;
      return prev;
    }, {});
    console.log(str7); //{a: 1, b: 2, c: 3, d: 5}
    // ===================方案二===========================
    var str7 = "abbcccddddd";
      var obj = {};
      for (var i = 0; i < str7.length; i++) {
        //str7[i]是每个字符
        //对象存在这个建名就+1 否则设置为1
         obj[str7[i]] ? (obj[str7[i]] += 1) : (obj[str7[i]] = 1);
      }
    console.log(obj);
    var max = 0;
    var maxChar;
    for(var k in obj) {
      //键值大于max就复制给max
      if(obj[k] > max) {
        max = obj[k];
        maxChar = k;
      }
    }
    console.log(maxChar + '出现次数最多 出现了:' + max + '次');
    //=============================方案二================================
    //转数组
    var str7 = 'abbcccddddd';
    var obj = str7.split('').reduce(function (prev, item) {
      prev[item] = prev[item] + 1 || 1;
      return prev;
    }, {});
    console.log(obj);
    var max = 0;
    var maxChar;
    for (var k in obj) {
      obj[k] > max ? (max = obj[k]) : max;
      maxChar = k;
    }
    console.log(maxChar + '出现次数最多 出现了:' + max + '次');
  </script>
</body>

</html>